#pragma once
#include "Runtime/BattleFirePrefix.h"
namespace Alice
{
    /**
     * Modes that an FGenericWindow can be in
     */
    enum EWindowMode : int
    {
        /** The window is in true fullscreen mode */
        Fullscreen,
        /** The window has no border and takes up the entire area of the screen */
        WindowedFullscreen,
        /** The window has a border and may not take up the entire screen area */
        Windowed,

        /** The total number of supported window modes */
        NumWindowModes
    };

    static inline EWindowMode ConvertIntToWindowMode(int32 InWindowMode)
    {
        EWindowMode WindowMode = Windowed;
        switch (InWindowMode)
        {
        case 0:
            WindowMode = Fullscreen;
            break;
        case 1:
            WindowMode = WindowedFullscreen;
            break;
        case 2:
        default:
            WindowMode = Windowed;
            break;
        }
        return WindowMode;
    }
    struct GenericWindowDefinition
    {
        /** The initially desired width */
        float WidthDesiredOnScreen;
        /** The initially desired height */
        float HeightDesiredOnScreen;
    };
    class GenericWindow
    {
    public:
        virtual void Show(){};
        virtual void* GetOSWindowHandle() const{return nullptr;}
    };
}
